package com.rui.patterns.combination;

/**
 * @author : [锐神NO.3]
 * @version : [v1.0]
 * @className : MenuComponent
 * @createTime : [2022/2/23 15:24]
 * @description : [菜单组件]
 */

public abstract class MenuComponent {

    /**
     * 菜单组件的名称
     */
    protected String name;

    /**
     * 菜单组件的层级
     */
    protected int level;

    /**
     * 添加子菜单
     * @param component 菜单组件
     */
    public void add(MenuComponent component){
        throw new UnsupportedOperationException();
    }

    /**
     * 移除子菜单
     * @param component 菜单组件
     */
    public void remove(MenuComponent component){
        throw new UnsupportedOperationException();
    }

    /**
     * 获取指定的子菜单
     */
    public MenuComponent getChild(int index){
        throw new UnsupportedOperationException();
    }

    /**
     * 获取菜单或者菜单项的名称
     */
    public String getName(){
        return name;
    }

    /**
     * 打印菜单名称（包含菜单和子菜单项）
     */
    public abstract void print();
}
